home *** CD-ROM | disk | FTP | other *** search
- From: rjl@monu1.cc.monash.edu.au (Russell Lang)
- Newsgroups: comp.sources.misc
- Subject: v16i012: Gnuplot 2.0 patch 2, 2 of 7
- Message-ID: <1991Jan5.035145.2351@sparky.IMD.Sterling.COM>
- Date: 5 Jan 91 03:51:45 GMT
- Approved: kent@sparky.imd.sterling.com
- X-Checksum-Snefru: b1409ea5 e2c7b52f aa3a1411 27a73e5e
-
- Submitted-by: Russell Lang <rjl@monu1.cc.monash.edu.au>
- Posting-number: Volume 16, Issue 12
- Archive-name: gnuplot2.02/patch2
- Patch-To: gnuplot2.0: Volume 11, Issue 65-79
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: patch2a
- # Wrapped by eln272v@monu1 on Wed Dec 19 11:57:18 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f patch2a -a "${1}" != "-c" ; then
- echo shar: Will not over-write existing file \"patch2a\"
- else
- echo shar: Extracting \"patch2a\" \(50620 characters\)
- sed "s/^X//" >patch2a <<'END_OF_patch2a'
- Xdiff -cr ./README ../gnuplot2.02/README
- X*** ./README Tue Sep 18 14:56:36 1990
- X--- ../gnuplot2.02/README Tue Dec 11 16:40:48 1990
- X***************
- X*** 208,213
- X AED AED 512 and AED 767
- X ATT6300 PC with AT&T 6300 graphics
- X BITGRAPH BBN BitGraph
- X CORONA PC with Corona graphics 325
- X DXY800A Roland DXY800A plotter
- X EEPIC EEPIC-extended LaTeX driver, for EEPIC users
- X
- X--- 208,214 -----
- X AED AED 512 and AED 767
- X ATT6300 PC with AT&T 6300 graphics
- X BITGRAPH BBN BitGraph
- X+ CGI SCO CGI
- X CORONA PC with Corona graphics 325
- X DXY800A Roland DXY800A plotter
- X EEPIC EEPIC-extended LaTeX driver, for EEPIC users
- X***************
- X*** 220,226
- X HP26 HP2623A and maybe others
- X HP75 HP7580, and probably other HPs
- X HPGL HP7475 and (hopefully) lots of others
- X! HPLJET HP Laserjet
- X IMAGEN Imagen laser printers (300dpi) (requires -Iterm also)
- X IRIS4D IRIS4D series computer
- X KERMIT MS-Kermit Tektronix 4010 emulator
- X
- X--- 221,227 -----
- X HP26 HP2623A and maybe others
- X HP75 HP7580, and probably other HPs
- X HPGL HP7475 and (hopefully) lots of others
- X! HPLJII HP Laserjet II
- X IMAGEN Imagen laser printers (300dpi) (requires -Iterm also)
- X IRIS4D IRIS4D series computer
- X KERMIT MS-Kermit Tektronix 4010 emulator
- X***************
- X*** 227,233
- X LATEX LATEX picture environment
- X NEC NEC CP6 pinwriter printer
- X POSTSCRIPT Postscript
- X! PROPRINTER IBM Proprinter
- X QMS QMS/QUIC laserprinter (Talaris 1200 and others)
- X REGIS ReGis graphics (vt125, vt220, vt240, Gigis...)
- X SELANAR Selanar
- X
- X--- 228,234 -----
- X LATEX LATEX picture environment
- X NEC NEC CP6 pinwriter printer
- X POSTSCRIPT Postscript
- X! PRESCRIBE Kyocera Laser printer
- X QMS QMS/QUIC laserprinter (Talaris 1200 and others)
- X REGIS ReGis graphics (vt125, vt220, vt240, Gigis...)
- X SELANAR Selanar
- X***************
- X*** 239,244
- X UNIXPC unixpc (ATT 3b1 or ATT 7300)
- X UNIXPLOT unixplot
- X V384 Vectrix 384 and tandy color printer
- X X11 X11R4 window system
- X
- X
- X
- X--- 240,246 -----
- X UNIXPC unixpc (ATT 3b1 or ATT 7300)
- X UNIXPLOT unixplot
- X V384 Vectrix 384 and tandy color printer
- X+ VTTEK VT like Tektronix 4010 emulator
- X X11 X11R4 window system
- X
- X
- X***************
- X*** 279,285
- X
- X under MSDOS:
- X Using Microsoft C 5.10.
- X! make makefile.msc
- X
- X Using Turbo C 2.0.
- X make -fmakefile.tc
- X
- X--- 281,288 -----
- X
- X under MSDOS:
- X Using Microsoft C 5.10.
- X! copy makefile.msc
- X! make makefile
- X
- X Using Turbo C 2.0.
- X copy makefile.tc
- X***************
- X*** 282,288
- X make makefile.msc
- X
- X Using Turbo C 2.0.
- X! make -fmakefile.tc
- X
- X The file gnuplot.gih is needed for help on the PC.
- X If the file gnuplot.gih is not in the default directory, then use:
- X
- X--- 285,293 -----
- X make makefile
- X
- X Using Turbo C 2.0.
- X! copy makefile.tc
- X! Edit makefile to change TC, BIN, BGI.
- X! make
- X
- X The file gnuplot.gih is needed for help on the PC.
- X If the file gnuplot.gih is not in the default directory, then use:
- Xdiff -cr ./README.x11 ../gnuplot2.02/README.x11
- X*** ./README.x11 Tue Sep 18 14:56:39 1990
- X--- ../gnuplot2.02/README.x11 Mon Nov 26 02:31:27 1990
- X***************
- X*** 1,4
- X! Gnuplot Support for X11
- X -----------------------
- X 31 August 1990
- X
- X
- X--- 1,4 -----
- X! Gnuplot (patch 2) Support for X11
- X -----------------------
- X 24 November 1990
- X
- X***************
- X*** 1,6
- X Gnuplot Support for X11
- X -----------------------
- X! 31 August 1990
- X
- X Installing gnuplot X11 support requires:
- X
- X
- X--- 1,6 -----
- X Gnuplot (patch 2) Support for X11
- X -----------------------
- X! 24 November 1990
- X
- X Installing gnuplot X11 support requires:
- X
- X***************
- X*** 10,19
- X
- X o compilation of the outboard X11 terminal driver gnuplot_x11
- X
- X- o additions to the gnuplot(1) man page to describe command line
- X- options and tailorable resources available when gnuplot terminal
- X- types x11 or X11 are used.
- X-
- X makefile.x11 (a modified version of makefile.unx) provides these additional
- X functions. The X11LIBS and X11INCLUDES parameters should be set to point to
- X the X11 libraries and include files on your system. Comments give settings
- X
- X--- 10,15 -----
- X
- X o compilation of the outboard X11 terminal driver gnuplot_x11
- X
- X makefile.x11 (a modified version of makefile.unx) provides these additional
- X functions. The X11LIBS and X11INCLUDES parameters should be set to point to
- X the X11 libraries and include files on your system. Comments give settings
- X***************
- X*** 17,23
- X makefile.x11 (a modified version of makefile.unx) provides these additional
- X functions. The X11LIBS and X11INCLUDES parameters should be set to point to
- X the X11 libraries and include files on your system. Comments give settings
- X! for several systems.
- X
- X Sorry, as of this writing no support is available for systems without the
- X Athena widget library (libXaw.a), or platforms other than unix.
- X
- X--- 13,20 -----
- X makefile.x11 (a modified version of makefile.unx) provides these additional
- X functions. The X11LIBS and X11INCLUDES parameters should be set to point to
- X the X11 libraries and include files on your system. Comments give settings
- X! for several systems. The X11FLAGS parameter should be set to "-DMOTIF" to
- X! compile for the Motif (libXm.a) rather than Athena (libXaw.a) widget library.
- X
- X The gnuplot man page describes command line options and tailorable resources
- X available when gnuplot terminal types x11 or X11 are used.
- X***************
- X*** 19,26
- X the X11 libraries and include files on your system. Comments give settings
- X for several systems.
- X
- X! Sorry, as of this writing no support is available for systems without the
- X! Athena widget library (libXaw.a), or platforms other than unix.
- X
- X Differences from "xgnuplot"
- X ---------------------------
- X
- X--- 16,23 -----
- X for several systems. The X11FLAGS parameter should be set to "-DMOTIF" to
- X compile for the Motif (libXm.a) rather than Athena (libXaw.a) widget library.
- X
- X! The gnuplot man page describes command line options and tailorable resources
- X! available when gnuplot terminal types x11 or X11 are used.
- X
- X Sorry, as of this writing no support is available for platforms other than unix.
- X
- X***************
- X*** 22,27
- X Sorry, as of this writing no support is available for systems without the
- X Athena widget library (libXaw.a), or platforms other than unix.
- X
- X Differences from "xgnuplot"
- X ---------------------------
- X
- X
- X--- 19,26 -----
- X The gnuplot man page describes command line options and tailorable resources
- X available when gnuplot terminal types x11 or X11 are used.
- X
- X+ Sorry, as of this writing no support is available for platforms other than unix.
- X+
- X Differences from "xgnuplot"
- X ---------------------------
- X This X11 support is based on the xgnuplot wrapper/terminal driver distributed
- X***************
- X*** 24,29
- X
- X Differences from "xgnuplot"
- X ---------------------------
- X
- X This X11 support is based on (and replaces) the xgnuplot wrapper/terminal
- X driver which was distributed separately from gnuplot. Differences:
- X
- X--- 23,30 -----
- X
- X Differences from "xgnuplot"
- X ---------------------------
- X+ This X11 support is based on the xgnuplot wrapper/terminal driver distributed
- X+ separately from gnuplot. Differences:
- X
- X o Gnuplot silently invokes the outboard driver, rather than vice versa.
- X Thus resource names in .Xdefaults begin with "gnuplot" rather than
- X***************
- X*** 25,33
- X Differences from "xgnuplot"
- X ---------------------------
- X
- X- This X11 support is based on (and replaces) the xgnuplot wrapper/terminal
- X- driver which was distributed separately from gnuplot. Differences:
- X-
- X o Gnuplot silently invokes the outboard driver, rather than vice versa.
- X Thus resource names in .Xdefaults begin with "gnuplot" rather than
- X "xgnuplot". En passant, this change fixed the bug where xgnuplot would
- X
- X--- 26,31 -----
- X This X11 support is based on the xgnuplot wrapper/terminal driver distributed
- X separately from gnuplot. Differences:
- X
- X o Gnuplot silently invokes the outboard driver, rather than vice versa.
- X Thus resource names in .Xdefaults begin with "gnuplot" rather than
- X "xgnuplot".
- X***************
- X*** 30,38
- X
- X o Gnuplot silently invokes the outboard driver, rather than vice versa.
- X Thus resource names in .Xdefaults begin with "gnuplot" rather than
- X! "xgnuplot". En passant, this change fixed the bug where xgnuplot would
- X! hang until Ctrl-C when gnuplot was exited without plotting at least
- X! one x11/X11 plot.
- X
- X o When the window is resized, the currently displayed plot is automatically
- X rescaled and replotted.
- X
- X--- 28,34 -----
- X
- X o Gnuplot silently invokes the outboard driver, rather than vice versa.
- X Thus resource names in .Xdefaults begin with "gnuplot" rather than
- X! "xgnuplot".
- X
- X o When the window is resized, the currently displayed plot is automatically
- X rescaled and replotted.
- X***************
- X*** 37,48
- X o When the window is resized, the currently displayed plot is automatically
- X rescaled and replotted.
- X
- X! o Compiles under X11 R3 as well as R4. This required using XtInitialize
- X! instead of XtAppInitialize, (char *) instead of XtPointer for callback
- X! client data declarations, removing a reference to XGetGCValues, and
- X! parameterizing (X11INCLUDES in makefile.x11) the location of the needed
- X! Athena include files.
- X!
- X
- X ---------------------------------
- X Ed Kubaitis, ejk@uxh.cso.uiuc.edu
- X
- X--- 33,40 -----
- X o When the window is resized, the currently displayed plot is automatically
- X rescaled and replotted.
- X
- X! o Compiles under X11 R3 as well as R4 and with either the Athena or Motif
- X! widget libraries.
- X
- X ---------------------------------
- X Ed Kubaitis, ejk@uxh.cso.uiuc.edu
- XCommon subdirectories: ./bugtest and ../gnuplot2.02/bugtest
- Xdiff -cr ./buildvms.com ../gnuplot2.02/buildvms.com
- X*** ./buildvms.com Tue Sep 18 14:56:40 1990
- X--- ../gnuplot2.02/buildvms.com Tue Dec 4 11:43:40 1990
- X***************
- X*** 3,8
- X $ !TERMFLAGS = "/define=()"
- X $ TERMFLAGS = ""
- X $ set verify
- X $ cc 'CFLAGS' command.c
- X $ cc 'CFLAGS' eval.c
- X $ cc 'CFLAGS' graphics.c
- X
- X--- 3,9 -----
- X $ !TERMFLAGS = "/define=()"
- X $ TERMFLAGS = ""
- X $ set verify
- X+ $ cc 'CFLAGS' bitmap.c
- X $ cc 'CFLAGS' command.c
- X $ cc 'CFLAGS' eval.c
- X $ cc 'CFLAGS' graphics.c
- X***************
- X*** 17,23
- X $ cc 'CFLAGS' util.c
- X $ cc 'CFLAGS' version.c
- X $ link /exe=gnuplot -
- X! command.obj,eval.obj,graphics.obj,internal.obj, -
- X misc.obj,parse.obj,plot.obj,scanner.obj,setshow.obj, -
- X standard.obj,term.obj,util.obj,version.obj ,linkopt.vms/opt
- X $ cc [.docs]doc2hlp.c
- X
- X--- 18,24 -----
- X $ cc 'CFLAGS' util.c
- X $ cc 'CFLAGS' version.c
- X $ link /exe=gnuplot -
- X! bitmap.obj,command.obj,eval.obj,graphics.obj,internal.obj, -
- X misc.obj,parse.obj,plot.obj,scanner.obj,setshow.obj, -
- X standard.obj,term.obj,util.obj,version.obj ,linkopt.vms/opt
- X $ cc [.docs]doc2hlp.c
- Xdiff -cr ./command.c ../gnuplot2.02/command.c
- X*** ./command.c Tue Sep 18 14:56:42 1990
- X--- ../gnuplot2.02/command.c Thu Nov 29 10:13:34 1990
- X***************
- X*** 75,81
- X extern int strlen(), strcmp();
- X
- X #ifdef unix
- X! extern char *getwd();
- X #else
- X extern char *getcwd();
- X #endif
- X
- X--- 75,82 -----
- X extern int strlen(), strcmp();
- X
- X #ifdef unix
- X! #ifdef GETCWD
- X! extern char *getcwd(); /* some Unix's use getcwd */
- X #else
- X extern char *getwd(); /* most Unix's use getwd */
- X #endif
- X***************
- X*** 77,83
- X #ifdef unix
- X extern char *getwd();
- X #else
- X! extern char *getcwd();
- X #endif
- X extern int chdir();
- X
- X
- X--- 78,84 -----
- X #ifdef GETCWD
- X extern char *getcwd(); /* some Unix's use getcwd */
- X #else
- X! extern char *getwd(); /* most Unix's use getwd */
- X #endif
- X #else
- X extern char *getcwd(); /* Turbo C, MSC and VMS use getcwd */
- X***************
- X*** 79,84
- X #else
- X extern char *getcwd();
- X #endif
- X extern int chdir();
- X
- X extern double magnitude(),angle(),real(),imag();
- X
- X--- 80,88 -----
- X #else
- X extern char *getwd(); /* most Unix's use getwd */
- X #endif
- X+ #else
- X+ extern char *getcwd(); /* Turbo C, MSC and VMS use getcwd */
- X+ #endif
- X extern int chdir();
- X
- X extern double magnitude(),angle(),real(),imag();
- X***************
- X*** 287,294
- X }
- X else if (almost_equals(c_token,"pwd")) {
- X #ifdef unix
- X! /* unix has getwd() */
- X! (void) getwd(sv_file);
- X #else
- X /* Turbo C and VMS have getcwd() */
- X (void) getcwd(sv_file,MAX_ID_LEN);
- X
- X--- 291,298 -----
- X }
- X else if (almost_equals(c_token,"pwd")) {
- X #ifdef unix
- X! #ifdef GETCWD
- X! (void) getcwd(sv_file,MAX_ID_LEN); /* some Unix's use getcwd */
- X #else
- X (void) getwd(sv_file); /* most Unix's use getwd */
- X #endif
- X***************
- X*** 290,295
- X /* unix has getwd() */
- X (void) getwd(sv_file);
- X #else
- X /* Turbo C and VMS have getcwd() */
- X (void) getcwd(sv_file,MAX_ID_LEN);
- X #endif
- X
- X--- 294,302 -----
- X #ifdef GETCWD
- X (void) getcwd(sv_file,MAX_ID_LEN); /* some Unix's use getcwd */
- X #else
- X+ (void) getwd(sv_file); /* most Unix's use getwd */
- X+ #endif
- X+ #else
- X /* Turbo C and VMS have getcwd() */
- X (void) getcwd(sv_file,MAX_ID_LEN);
- X #endif
- X***************
- X*** 328,333
- X
- X
- X plotrequest()
- X {
- X BOOLEAN changed;
- X int dummy_token = -1;
- X
- X--- 335,346 -----
- X
- X
- X plotrequest()
- X+ /*
- X+ In the parametric case we can say
- X+ plot [a= -4:4] [-2:2] [-1:1] sin(a),a**2
- X+ while in the non-parametric case we would say only
- X+ plot [b= -2:2] [-1:1] sin(b)
- X+ */
- X {
- X BOOLEAN changed;
- X int dummy_token = -1;
- X***************
- X*** 332,337
- X BOOLEAN changed;
- X int dummy_token = -1;
- X
- X autoscale_lx = autoscale_x;
- X autoscale_ly = autoscale_y;
- X
- X
- X--- 345,351 -----
- X BOOLEAN changed;
- X int dummy_token = -1;
- X
- X+ autoscale_lt = autoscale_t;
- X autoscale_lx = autoscale_x;
- X autoscale_ly = autoscale_y;
- X
- X***************
- X*** 350,355
- X /* used to be: int_error("'=' expected",c_token); */
- X }
- X }
- X changed = load_range(&xmin,&xmax);
- X if (!equals(c_token,"]"))
- X int_error("']' expected",c_token);
- X
- X--- 364,383 -----
- X /* used to be: int_error("'=' expected",c_token); */
- X }
- X }
- X+ changed = parametric ? load_range(&tmin,&tmax):load_range(&xmin,&xmax);
- X+ if (!equals(c_token,"]"))
- X+ int_error("']' expected",c_token);
- X+ c_token++;
- X+ if (changed) {
- X+ if (parametric)
- X+ autoscale_lt = FALSE;
- X+ else
- X+ autoscale_lx = FALSE;
- X+ }
- X+ }
- X+
- X+ if (parametric && equals(c_token,"[")) { /* set optional x ranges */
- X+ c_token++;
- X changed = load_range(&xmin,&xmax);
- X if (!equals(c_token,"]"))
- X int_error("']' expected",c_token);
- X***************
- X*** 417,422
- X register FILE *fp;
- X float x, y;
- X int npoints; /* number of points and breaks read */
- X
- X quote_str(data_file, c_token);
- X this_plot->plot_type = DATA;
- X
- X--- 445,453 -----
- X register FILE *fp;
- X float x, y;
- X int npoints; /* number of points and breaks read */
- X+ float temp;
- X+ BOOLEAN yfirst;
- X+ char format[MAX_LINE_LEN+1];
- X
- X quote_str(data_file, c_token);
- X this_plot->plot_type = DATA;
- X***************
- X*** 423,428
- X if ((fp = fopen(data_file, "r")) == (FILE *)NULL)
- X os_error("can't open data file", c_token);
- X
- X l_num = 0;
- X datum = 0;
- X i = 0;
- X
- X--- 454,483 -----
- X if ((fp = fopen(data_file, "r")) == (FILE *)NULL)
- X os_error("can't open data file", c_token);
- X
- X+ format[0] = '\0';
- X+ yfirst = FALSE;
- X+ c_token++; /* skip data file name */
- X+ if (almost_equals(c_token,"u$sing")) {
- X+ c_token++; /* skip "using" */
- X+ if (!isstring(c_token)) {
- X+ if ( equals(c_token,"xy") || equals(c_token,"y") )
- X+ yfirst = FALSE;
- X+ else if (equals(c_token,"yx"))
- X+ yfirst = TRUE;
- X+ else
- X+ int_error("expecting xy, yx, y or format (scanf) string",c_token);
- X+ c_token++; /* skip "xy", "yx" or "y" */
- X+ }
- X+ if (isstring(c_token)) {
- X+ quotel_str(format, c_token);
- X+ c_token++; /* skip format */
- X+ }
- X+ else
- X+ int_error("expecting format (scanf) string",c_token);
- X+ }
- X+ if (strlen(format) == 0)
- X+ strcpy(format,"%f %f");
- X+
- X l_num = 0;
- X datum = 0;
- X i = 0;
- X***************
- X*** 441,447
- X continue;
- X }
- X
- X! switch (sscanf(line, "%f %f", &x, &y)) {
- X case 1: { /* only one number on the line */
- X y = x; /* assign that number to y */
- X x = datum; /* and make the index into x */
- X
- X--- 496,502 -----
- X continue;
- X }
- X
- X! switch (sscanf(line, format, &x, &y)) {
- X case 1: { /* only one number on the line */
- X y = x; /* assign that number to y */
- X x = datum; /* and make the index into x */
- X***************
- X*** 448,453
- X /* no break; !!! */
- X }
- X case 2: {
- X datum++;
- X this_plot->points[i].type = INRANGE;
- X
- X
- X--- 503,513 -----
- X /* no break; !!! */
- X }
- X case 2: {
- X+ if (yfirst) { /* exchange x and y */
- X+ temp = y;
- X+ y = x;
- X+ x = temp;
- X+ }
- X datum++;
- X this_plot->points[i].type = INRANGE;
- X
- X***************
- X*** 517,523
- X {
- X register int i;
- X register struct curve_points *this_plot, **tp_ptr;
- X! register int start_token, mysamples;
- X register int begin_token;
- X register double x_min, x_max, y_min, y_max, x;
- X register double xdiff, temp;
- X
- X--- 577,583 -----
- X {
- X register int i;
- X register struct curve_points *this_plot, **tp_ptr;
- X! register int start_token, end_token, mysamples;
- X register int begin_token;
- X double x_min, x_max, y_min, y_max;
- X register double x, xdiff, temp;
- X***************
- X*** 519,526
- X register struct curve_points *this_plot, **tp_ptr;
- X register int start_token, mysamples;
- X register int begin_token;
- X! register double x_min, x_max, y_min, y_max, x;
- X! register double xdiff, temp;
- X static struct value a;
- X BOOLEAN some_data_files = FALSE;
- X int plot_num, line_num, point_num;
- X
- X--- 579,586 -----
- X register struct curve_points *this_plot, **tp_ptr;
- X register int start_token, end_token, mysamples;
- X register int begin_token;
- X! double x_min, x_max, y_min, y_max;
- X! register double x, xdiff, temp;
- X static struct value a;
- X BOOLEAN ltmp, some_data_files = FALSE;
- X int plot_num, line_num, point_num, xparam=0;
- X***************
- X*** 522,529
- X register double x_min, x_max, y_min, y_max, x;
- X register double xdiff, temp;
- X static struct value a;
- X! BOOLEAN some_data_files = FALSE;
- X! int plot_num, line_num, point_num;
- X
- X mysamples = samples;
- X
- X
- X--- 582,591 -----
- X double x_min, x_max, y_min, y_max;
- X register double x, xdiff, temp;
- X static struct value a;
- X! BOOLEAN ltmp, some_data_files = FALSE;
- X! int plot_num, line_num, point_num, xparam=0;
- X! char *xtitle;
- X! void parametric_fixup();
- X
- X mysamples = samples;
- X
- X***************
- X*** 569,574
- X }
- X
- X if (isstring(c_token)) { /* data file to plot */
- X if (!some_data_files && autoscale_lx) {
- X xmin = VERYLARGE;
- X xmax = -VERYLARGE;
- X
- X--- 631,640 -----
- X }
- X
- X if (isstring(c_token)) { /* data file to plot */
- X+ if (parametric && xparam)
- X+ int_error("previous parametric function not fully specified",
- X+ c_token);
- X+
- X if (!some_data_files && autoscale_lx) {
- X xmin = VERYLARGE;
- X xmax = -VERYLARGE;
- X***************
- X*** 577,584
- X
- X this_plot->plot_type = DATA;
- X this_plot->plot_style = data_style;
- X! get_data(this_plot);
- X! c_token++;
- X }
- X else { /* function to plot */
- X this_plot->plot_type = FUNC;
- X
- X--- 643,650 -----
- X
- X this_plot->plot_type = DATA;
- X this_plot->plot_style = data_style;
- X! end_token = c_token;
- X! get_data(this_plot); /* this also parses the using option */
- X }
- X else { /* function to plot */
- X if (parametric) /* working on x parametric function */
- X***************
- X*** 581,586
- X c_token++;
- X }
- X else { /* function to plot */
- X this_plot->plot_type = FUNC;
- X this_plot->plot_style = func_style;
- X dummy_func = &plot_func;
- X
- X--- 647,654 -----
- X get_data(this_plot); /* this also parses the using option */
- X }
- X else { /* function to plot */
- X+ if (parametric) /* working on x parametric function */
- X+ xparam = 1 - xparam;
- X this_plot->plot_type = FUNC;
- X this_plot->plot_style = func_style;
- X dummy_func = &plot_func;
- X***************
- X*** 586,591
- X dummy_func = &plot_func;
- X plot_func.at = temp_at();
- X /* ignore it for now */
- X }
- X
- X if (almost_equals(c_token,"t$itle")) {
- X
- X--- 654,660 -----
- X dummy_func = &plot_func;
- X plot_func.at = temp_at();
- X /* ignore it for now */
- X+ end_token = c_token-1;
- X }
- X
- X if (almost_equals(c_token,"t$itle")) {
- X***************
- X*** 589,594
- X }
- X
- X if (almost_equals(c_token,"t$itle")) {
- X c_token++;
- X if ( (input_line[token[c_token].start_index]=='\'')
- X ||(input_line[token[c_token].start_index]=='"') ) {
- X
- X--- 658,671 -----
- X }
- X
- X if (almost_equals(c_token,"t$itle")) {
- X+ if (parametric) {
- X+ if (xparam)
- X+ int_error(
- X+ "\"title\" allowed only after parametric function fully specified",
- X+ c_token);
- X+ else if (xtitle != NULL)
- X+ xtitle[0] = '\0'; /* Remove default title .*/
- X+ }
- X c_token++;
- X if ( (input_line[token[c_token].start_index]=='\'')
- X ||(input_line[token[c_token].start_index]=='"') ) {
- X***************
- X*** 599,609
- X }
- X c_token++;
- X }
- X! else {
- X! m_capture(&(this_plot->title),start_token,c_token-1);
- X! }
- X!
- X! this_plot->line_type = line_num;
- X this_plot->point_type = point_num;
- X
- X if (almost_equals(c_token,"w$ith")) {
- X
- X--- 676,687 -----
- X }
- X c_token++;
- X }
- X! else {
- X! m_capture(&(this_plot->title),start_token,end_token);
- X! if (xparam) xtitle = this_plot->title;
- X! }
- X!
- X! this_plot->line_type = line_num;
- X this_plot->point_type = point_num;
- X
- X if (almost_equals(c_token,"w$ith")) {
- X***************
- X*** 607,612
- X this_plot->point_type = point_num;
- X
- X if (almost_equals(c_token,"w$ith")) {
- X this_plot->plot_style = get_style();
- X }
- X
- X
- X--- 685,693 -----
- X this_plot->point_type = point_num;
- X
- X if (almost_equals(c_token,"w$ith")) {
- X+ if (parametric && xparam)
- X+ int_error("\"with\" allowed only after parametric function fully specified",
- X+ c_token);
- X this_plot->plot_style = get_style();
- X }
- X
- X***************
- X*** 620,627
- X }
- X if ( (this_plot->plot_style == POINTS) ||
- X (this_plot->plot_style == LINESPOINTS) )
- X! point_num++;
- X! line_num++;
- X
- X tp_ptr = &(this_plot->next_cp);
- X }
- X
- X--- 701,708 -----
- X }
- X if ( (this_plot->plot_style == POINTS) ||
- X (this_plot->plot_style == LINESPOINTS) )
- X! if (!xparam) point_num++;
- X! if (!xparam) line_num++;
- X
- X tp_ptr = &(this_plot->next_cp);
- X }
- X***************
- X*** 632,637
- X break;
- X }
- X
- X /*** Second Pass: Evaluate the functions ***/
- X /* Everything is defined now, except the function data. We expect
- X * no syntax errors, etc, since the above parsed it all. This makes
- X
- X--- 713,728 -----
- X break;
- X }
- X
- X+ if (parametric && xparam)
- X+ int_error("parametric function not fully specified", NO_CARET);
- X+
- X+ if (parametric) {
- X+ /* Swap t and x ranges for duration of these eval_plot computations. */
- X+ ltmp = autoscale_lx; autoscale_lx = autoscale_lt; autoscale_lt = ltmp;
- X+ temp = xmin; xmin = tmin; tmin = temp;
- X+ temp = xmax; xmax = tmax; tmax = temp;
- X+ }
- X+
- X /*** Second Pass: Evaluate the functions ***/
- X /* Everything is defined now, except the function data. We expect
- X * no syntax errors, etc, since the above parsed it all. This makes
- X***************
- X*** 639,645
- X */
- X if (xmin == xmax)
- X if (autoscale_lx) {
- X! fprintf(stderr, "Warning: empty x range [%g:%g], ", xmin,xmax);
- X if (xmin == 0.0) {
- X /* completely arbitary */
- X xmin = -1.;
- X
- X--- 730,737 -----
- X */
- X if (xmin == xmax)
- X if (autoscale_lx) {
- X! fprintf(stderr, "Warning: empty %c range [%g:%g], ",
- X! parametric ? 't' : 'x', xmin,xmax);
- X if (xmin == 0.0) {
- X /* completely arbitary */
- X xmin = -1.;
- X***************
- X*** 654,659
- X int_error("x range is empty", c_token);
- X }
- X
- X if (log_x) {
- X if (xmin <= 0.0 || xmax <= 0.0)
- X int_error("x range must be greater than 0 for log scale!",NO_CARET);
- X
- X--- 746,756 -----
- X int_error("x range is empty", c_token);
- X }
- X
- X+ /* give error if xrange badly set from missing datafile error */
- X+ if (xmin == VERYLARGE || xmax == -VERYLARGE) {
- X+ int_error("x range is invalid", c_token);
- X+ }
- X+
- X if (log_x) {
- X if (xmin <= 0.0 || xmax <= 0.0)
- X int_error("x range must be greater than 0 for log scale!",NO_CARET);
- X***************
- X*** 679,684
- X if (isstring(c_token)) { /* data file to plot */
- X /* ignore this now */
- X c_token++;
- X }
- X else { /* function to plot */
- X dummy_func = &plot_func;
- X
- X--- 776,787 -----
- X if (isstring(c_token)) { /* data file to plot */
- X /* ignore this now */
- X c_token++;
- X+ if (almost_equals(c_token,"u$sing")) {
- X+ c_token++; /* skip "using" */
- X+ if (!isstring(c_token))
- X+ c_token++; /* skip "xy", "yx" or "y" */
- X+ c_token++; /* skip format string */
- X+ }
- X }
- X else { /* function to plot */
- X if (parametric) /* working on x parametric function */
- X***************
- X*** 681,686
- X c_token++;
- X }
- X else { /* function to plot */
- X dummy_func = &plot_func;
- X plot_func.at = temp_at(); /* reparse function */
- X
- X
- X--- 784,791 -----
- X }
- X }
- X else { /* function to plot */
- X+ if (parametric) /* working on x parametric function */
- X+ xparam = 1 - xparam;
- X dummy_func = &plot_func;
- X plot_func.at = temp_at(); /* reparse function */
- X
- X***************
- X*** 724,731
- X if (autoscale_ly || polar
- X || inrange(temp, ymin, ymax)) {
- X this_plot->points[i].type = INRANGE;
- X! if (autoscale_ly && temp < ymin) ymin = temp;
- X! if (autoscale_ly && temp > ymax) ymax = temp;
- X } else
- X this_plot->points[i].type = OUTRANGE;
- X }
- X
- X--- 829,839 -----
- X if (autoscale_ly || polar
- X || inrange(temp, ymin, ymax)) {
- X this_plot->points[i].type = INRANGE;
- X! /* When xparam is 1 we are not really computing y's! */
- X! if (!xparam && autoscale_ly) {
- X! if (temp < ymin) ymin = temp;
- X! if (temp > ymax) ymax = temp;
- X! }
- X } else
- X this_plot->points[i].type = OUTRANGE;
- X }
- X***************
- X*** 789,794
- X y_max = ymax;
- X }
- X capture(replot_line,plot_token,c_token);
- X do_plot(first_plot,plot_num,x_min,x_max,y_min,y_max);
- X }
- X
- X
- X--- 897,918 -----
- X y_max = ymax;
- X }
- X capture(replot_line,plot_token,c_token);
- X+
- X+ if (parametric) {
- X+ /* Now put t and x ranges back before we actually plot anything. */
- X+ ltmp = autoscale_lx; autoscale_lx = autoscale_lt; autoscale_lt = ltmp;
- X+ temp = xmin; xmin = tmin; tmin = temp;
- X+ temp = xmax; xmax = tmax; tmax = temp;
- X+ if (some_data_files && autoscale_lx) {
- X+ /*
- X+ Stop any further autoscaling in this case (may be a mistake, have
- X+ to consider what is really wanted some day in the future--jdc).
- X+ */
- X+ autoscale_lx = 0;
- X+ }
- X+ /* Now actually fix the plot pairs to be single plots. */
- X+ parametric_fixup (first_plot, &plot_num, &x_min, &x_max);
- X+ }
- X do_plot(first_plot,plot_num,x_min,x_max,y_min,y_max);
- X }
- X
- X***************
- X*** 804,809
- X #endif
- X exit(status);
- X }
- X
- X #ifdef MSDOS
- X #ifndef __TURBOC__ /* Turbo C already has sleep() */
- X
- X--- 928,1074 -----
- X #endif
- X exit(status);
- X }
- X+
- X+ void parametric_fixup (start_plot, plot_num, x_min, x_max)
- X+ struct curve_points *start_plot;
- X+ int *plot_num;
- X+ double *x_min, *x_max;
- X+ /*
- X+ The hardest part of this routine is collapsing the FUNC plot types
- X+ in the list (which are gauranteed to occur in (x,y) pairs while
- X+ preserving the non-FUNC type plots intact. This means we have to
- X+ work our way through various lists. Examples (hand checked):
- X+ start_plot:F1->F2->NULL ==> F2->NULL
- X+ start_plot:F1->F2->F3->F4->F5->F6->NULL ==> F2->F4->F6->NULL
- X+ start_plot:F1->F2->D1->D2->F3->F4->D3->NULL ==> F2->D1->D2->F4->D3->NULL
- X+
- X+ Of course, the more interesting work is to move the y values of
- X+ the x function to become the x values of the y function (checking
- X+ the mins and maxs as we go along).
- X+ */
- X+ {
- X+ struct curve_points *xp, *new_list, *yp = start_plot, *tmp,
- X+ *free_list, *free_head=NULL;
- X+ int i, tlen, curve;
- X+ char *new_title;
- X+ double lxmin, lxmax, temp;
- X+
- X+ if (autoscale_lx) {
- X+ lxmin = VERYLARGE;
- X+ lxmax = -VERYLARGE;
- X+ } else {
- X+ lxmin = xmin;
- X+ lxmax = xmax;
- X+ }
- X+
- X+ /*
- X+ Ok, go through all the plots and move FUNC types together. Note: this
- X+ originally was written to look for a NULL next pointer, but gnuplot
- X+ wants to be sticky in grabbing memory and the right number of items
- X+ in the plot list is controlled by the plot_num variable.
- X+
- X+ Since gnuplot wants to do this sticky business, a free_list of
- X+ curve_points is kept and then tagged onto the end of the plot list as
- X+ this seems more in the spirit of the original memory behavior than
- X+ simply freeing the memory. I'm personally not convinced this sort
- X+ of concern is worth it since the time spent computing points seems
- X+ to dominate any garbage collecting that might be saved here...
- X+ */
- X+ new_list = xp = start_plot;
- X+ yp = xp->next_cp;
- X+ curve = 0;
- X+ for (; curve < *plot_num; xp = xp->next_cp,yp = yp->next_cp,curve++) {
- X+ if (xp->plot_type != FUNC) {
- X+ continue;
- X+ }
- X+ /* Here's a FUNC parametric function defined as two parts. */
- X+ --(*plot_num);
- X+ /*
- X+ Go through all the points assigning the y's from xp to be the
- X+ x's for yp. Check max's and min's as you go.
- X+ */
- X+ for (i = 0; i < yp->p_count; ++i) {
- X+ /*
- X+ Throw away excess xp points, mark excess yp points as OUTRANGE.
- X+ */
- X+ if (i > xp->p_count) {
- X+ yp->points[i].type == OUTRANGE;
- X+ continue;
- X+ }
- X+ /*
- X+ Just as we had to do when we computed y values--now check that
- X+ x's (computed parametrically) are in the permitted ranges as well.
- X+ */
- X+ temp = xp->points[i].y; /* New x value for yp function. */
- X+ yp->points[i].x = temp;
- X+ /* For legitimate y values, let the x values decide if they plot. */
- X+ if (yp->points[i].type == INRANGE)
- X+ yp->points[i].type = xp->points[i].type;
- X+ if (autoscale_lx || polar
- X+ || inrange(temp, lxmin, lxmax)) {
- X+ if (autoscale_lx && temp < lxmin) lxmin = temp;
- X+ if (autoscale_lx && temp > lxmax) lxmax = temp;
- X+ } else
- X+ yp->points[i].type = OUTRANGE; /* Due to x value. */
- X+ }
- X+ /* Ok, fix up the title to include both the xp and yp plots. */
- X+ if (xp->title && xp->title[0] != '\0') {
- X+ tlen = strlen (yp->title) + strlen (xp->title) + 3;
- X+ new_title = alloc ((unsigned int) tlen, "string");
- X+ strcpy (new_title, xp->title);
- X+ strcat (new_title, ", "); /* + 2 */
- X+ strcat (new_title, yp->title); /* + 1 = + 3 */
- X+ free (yp->title);
- X+ yp->title = new_title;
- X+ }
- X+ /* Eliminate the first curve (xparam) and just use the second. */
- X+ if (xp == start_plot) {
- X+ /* Simply nip off the first element of the list. */
- X+ new_list = first_plot = yp;
- X+ xp = xp->next_cp;
- X+ if (yp->next_cp != NULL)
- X+ yp = yp->next_cp;
- X+ /* Add start_plot to the free_list. */
- X+ if (free_head == NULL) {
- X+ free_list = free_head = start_plot;
- X+ free_head->next_cp = NULL;
- X+ } else {
- X+ free_list->next_cp = start_plot;
- X+ start_plot->next_cp = NULL;
- X+ free_list = start_plot;
- X+ }
- X+ }
- X+ else {
- X+ /* Here, remove the xp node and replace it with the yp node. */
- X+ tmp = xp;
- X+ /* Pass over any data files that might have been in place. */
- X+ while (new_list->next_cp && new_list->next_cp != xp)
- X+ new_list = new_list->next_cp;
- X+ new_list->next_cp = yp;
- X+ new_list = new_list->next_cp;
- X+ xp = xp->next_cp;
- X+ if (yp->next_cp != NULL)
- X+ yp = yp->next_cp;
- X+ /* Add tmp to the free_list. */
- X+ if (free_head == NULL) {
- X+ free_list = free_head = tmp;
- X+ } else {
- X+ free_list->next_cp = tmp;
- X+ tmp->next_cp = NULL;
- X+ free_list = tmp;
- X+ }
- X+ }
- X+ }
- X+ /* Ok, stick the free list at the end of the curve_points plot list. */
- X+ while (new_list->next_cp != NULL)
- X+ new_list = new_list->next_cp;
- X+ new_list->next_cp = free_head;
- X+
- X+ /* Report the overall graph mins and maxs. */
- X+ *x_min = lxmin;
- X+ *x_max = lxmax;
- X+ }
- X+
- X
- X #ifdef MSDOS
- X #ifndef __TURBOC__ /* Turbo C already has sleep() */
- XCommon subdirectories: ./demo and ../gnuplot2.02/demo
- XCommon subdirectories: ./docs and ../gnuplot2.02/docs
- XOnly in .: gnuplot
- Xdiff -cr ./gnuplot_x11.c ../gnuplot2.02/gnuplot_x11.c
- X*** ./gnuplot_x11.c Tue Sep 18 14:59:27 1990
- X--- ../gnuplot2.02/gnuplot_x11.c Wed Nov 28 09:34:33 1990
- X***************
- X*** 1,5
- X /*-----------------------------------------------------------------------------
- X- *
- X * gnuplot_x11 - X11 outboard terminal driver for gnuplot 2
- X *
- X * Requires installation of companion inboard x11 driver in gnuplot/term.c
- X
- X--- 1,4 -----
- X /*-----------------------------------------------------------------------------
- X * gnuplot_x11 - X11 outboard terminal driver for gnuplot 2
- X *
- X * Requires installation of companion inboard x11 driver in gnuplot/term.c
- X***************
- X*** 8,13
- X * Chris Peterson (MIT) - original Xlib gnuplot support (and Xaw examples)
- X * Dana Chee (Bellcore) - mods to original support for gnuplot 2.0
- X * Arthur Smith (Cornell) - graphical-label-widget idea (xplot)
- X *
- X * This code is provided as is and with no warranties of any kind.
- X *
- X
- X--- 7,13 -----
- X * Chris Peterson (MIT) - original Xlib gnuplot support (and Xaw examples)
- X * Dana Chee (Bellcore) - mods to original support for gnuplot 2.0
- X * Arthur Smith (Cornell) - graphical-label-widget idea (xplot)
- X+ * Hendri Hondorp (University of Twente, The Netherlands) - Motif xgnuplot
- X *
- X * This code is provided as is and with no warranties of any kind.
- X *
- X***************
- X*** 11,18
- X *
- X * This code is provided as is and with no warranties of any kind.
- X *
- X! * Ed Kubaitis
- X! * Computing Services Office - University of Illinois, Urbana
- X *---------------------------------------------------------------------------*/
- X
- X #include <stdio.h>
- X
- X--- 11,17 -----
- X *
- X * This code is provided as is and with no warranties of any kind.
- X *
- X! * Ed Kubaitis - Computing Services Office - University of Illinois, Urbana
- X *---------------------------------------------------------------------------*/
- X
- X #include <stdio.h>
- X***************
- X*** 16,21
- X *---------------------------------------------------------------------------*/
- X
- X #include <stdio.h>
- X #include <X11/Intrinsic.h>
- X #include <X11/StringDefs.h>
- X #include <Cardinals.h> /* use -Idir for location on your system */
- X
- X--- 15,21 -----
- X *---------------------------------------------------------------------------*/
- X
- X #include <stdio.h>
- X+ #include <signal.h>
- X #include <X11/Intrinsic.h>
- X #include <X11/StringDefs.h>
- X #include <Label.h> /* use -Idir for location on your system */
- X***************
- X*** 18,24
- X #include <stdio.h>
- X #include <X11/Intrinsic.h>
- X #include <X11/StringDefs.h>
- X- #include <Cardinals.h> /* use -Idir for location on your system */
- X #include <Label.h> /* use -Idir for location on your system */
- X
- X
- X
- X--- 18,23 -----
- X #include <signal.h>
- X #include <X11/Intrinsic.h>
- X #include <X11/StringDefs.h>
- X #include <Label.h> /* use -Idir for location on your system */
- X #ifdef MOTIF
- X #include <Xm.h> /* use -Idir for location on your system */
- X***************
- X*** 20,25
- X #include <X11/StringDefs.h>
- X #include <Cardinals.h> /* use -Idir for location on your system */
- X #include <Label.h> /* use -Idir for location on your system */
- X
- X
- X #define Color (D>1)
- X
- X--- 19,32 -----
- X #include <X11/Intrinsic.h>
- X #include <X11/StringDefs.h>
- X #include <Label.h> /* use -Idir for location on your system */
- X+ #ifdef MOTIF
- X+ #include <Xm.h> /* use -Idir for location on your system */
- X+ #define LabelWC xmLabelWidgetClass
- X+ #define LabelBPM XmNbackgroundPixmap
- X+ #else
- X+ #define LabelWC labelWidgetClass
- X+ #define LabelBPM XtNbitmap
- X+ #endif
- X
- X #define Color (D>1)
- X #define Ncolors 11
- X***************
- X*** 21,27
- X #include <Cardinals.h> /* use -Idir for location on your system */
- X #include <Label.h> /* use -Idir for location on your system */
- X
- X-
- X #define Color (D>1)
- X #define Ncolors 11
- X unsigned long colors[Ncolors];
- X
- X--- 28,33 -----
- X #define LabelBPM XtNbitmap
- X #endif
- X
- X #define Color (D>1)
- X #define Ncolors 11
- X unsigned long colors[Ncolors];
- X***************
- X*** 27,33
- X unsigned long colors[Ncolors];
- X char color_keys[Ncolors][30] = { "text", "border", "axis",
- X "line1", "line2", "line3", "line4", "line5", "line6", "line7", "line8" };
- X-
- X char color_values[Ncolors][30] = { "black", "black", "black",
- X "red", "green", "blue", "magenta", "cyan", "sienna", "orange", "coral" };
- X
- X
- X--- 33,38 -----
- X unsigned long colors[Ncolors];
- X char color_keys[Ncolors][30] = { "text", "border", "axis",
- X "line1", "line2", "line3", "line4", "line5", "line6", "line7", "line8" };
- X char color_values[Ncolors][30] = { "black", "black", "black",
- X "red", "green", "blue", "magenta", "cyan", "sienna", "orange", "coral" };
- X
- X***************
- X*** 35,42
- X {0}, {4,2,0}, {1,3,0}, {4,4,0}, {1,5,0}, {4,4,4,1,0}, {4,2,0}, {1,3,0}
- X };
- X
- X! Widget w_top, w_label;
- X! Window win; Display *dpy;
- X Pixmap pixmap; GC gc = (GC)NULL;
- X XFontStruct *font;
- X unsigned long fg, bg;
- X
- X--- 40,46 -----
- X {0}, {4,2,0}, {1,3,0}, {4,4,0}, {1,5,0}, {4,4,4,1,0}, {4,2,0}, {1,3,0}
- X };
- X
- X! Widget w_top, w_label; Window win; Display *dpy;
- X Pixmap pixmap; GC gc = (GC)NULL;
- X Dimension W = 640 , H = 450; int D;
- X Arg args[5];
- X***************
- X*** 38,45
- X Widget w_top, w_label;
- X Window win; Display *dpy;
- X Pixmap pixmap; GC gc = (GC)NULL;
- X- XFontStruct *font;
- X- unsigned long fg, bg;
- X Dimension W = 640 , H = 450; int D;
- X Arg args[5];
- X static void gnuplot(), resize();
- X
- X--- 42,47 -----
- X
- X Widget w_top, w_label; Window win; Display *dpy;
- X Pixmap pixmap; GC gc = (GC)NULL;
- X Dimension W = 640 , H = 450; int D;
- X Arg args[5];
- X static void gnuplot(), resize();
- X***************
- X*** 53,58
- X char buf[Nbuf];
- X String *commands = NULL;
- X
- X /*-----------------------------------------------------------------------------
- X * main program - fire up application and callbacks
- X *---------------------------------------------------------------------------*/
- X
- X--- 55,76 -----
- X char buf[Nbuf];
- X String *commands = NULL;
- X
- X+ typedef struct { /* See "X Toolkit Intrinsics Programming Manual" */
- X+ XFontStruct *font; /* Nye and O'Reilly, O'Reilly & Associates, pp. 80-85 */
- X+ unsigned long fg;
- X+ unsigned long bg;
- X+ } RValues, *RVptr;
- X+ RValues rv;
- X+
- X+ XtResource resources[] = {
- X+ { XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
- X+ XtOffset(RVptr, font), XtRString, "fixed" },
- X+ { XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
- X+ XtOffset(RVptr, fg), XtRString, XtDefaultForeground },
- X+ { XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel),
- X+ XtOffset(RVptr, bg), XtRString, XtDefaultBackground },
- X+ };
- X+
- X /*-----------------------------------------------------------------------------
- X * main program - fire up application and callbacks
- X *---------------------------------------------------------------------------*/
- X***************
- X*** 59,64
- X
- X main(argc, argv) int argc; char *argv[]; {
- X
- X /* initialize application */
- X w_top = XtInitialize("gnuplot", "Gnuplot", NULL, 0, &argc, argv);
- X XtSetArg(args[0], XtNwidth, W);
- X
- X--- 77,85 -----
- X
- X main(argc, argv) int argc; char *argv[]; {
- X
- X+ signal(SIGINT, SIG_IGN);
- X+ signal(SIGTSTP, SIG_IGN);
- X+
- X /* initialize application */
- X w_top = XtInitialize("gnuplot", "Gnuplot", NULL, 0, &argc, argv);
- X XtSetArg(args[0], XtNwidth, W);
- X***************
- X*** 63,69
- X w_top = XtInitialize("gnuplot", "Gnuplot", NULL, 0, &argc, argv);
- X XtSetArg(args[0], XtNwidth, W);
- X XtSetArg(args[1], XtNheight, H);
- X! w_label = XtCreateManagedWidget("", labelWidgetClass, w_top, args, TWO);
- X XtRealizeWidget(w_top);
- X
- X /* extract needed information */
- X
- X--- 84,90 -----
- X w_top = XtInitialize("gnuplot", "Gnuplot", NULL, 0, &argc, argv);
- X XtSetArg(args[0], XtNwidth, W);
- X XtSetArg(args[1], XtNheight, H);
- X! w_label = XtCreateManagedWidget ("", LabelWC, w_top, args, (Cardinal)2);
- X XtRealizeWidget(w_top);
- X
- X /* extract needed information */
- X***************
- X*** 67,73
- X XtRealizeWidget(w_top);
- X
- X /* extract needed information */
- X! dpy = XtDisplay(w_top); win = XtWindow(w_top); D = DisplayPlanes(dpy,0);
- X if (Color) {
- X char option[20], *value;
- X XColor used, exact;
- X
- X--- 88,95 -----
- X XtRealizeWidget(w_top);
- X
- X /* extract needed information */
- X! dpy = XtDisplay(w_top); win = XtWindow(w_label);
- X! D = DisplayPlanes(dpy,DefaultScreen(dpy));
- X if (Color) {
- X char option[20], *value;
- X XColor used, exact; int n;
- X***************
- X*** 70,77
- X dpy = XtDisplay(w_top); win = XtWindow(w_top); D = DisplayPlanes(dpy,0);
- X if (Color) {
- X char option[20], *value;
- X! XColor used, exact;
- X! int n;
- X
- X for(n=0; n<Ncolors; n++) {
- X strcpy(option, color_keys[n]);
- X
- X--- 92,98 -----
- X D = DisplayPlanes(dpy,DefaultScreen(dpy));
- X if (Color) {
- X char option[20], *value;
- X! XColor used, exact; int n;
- X
- X for(n=0; n<Ncolors; n++) {
- X strcpy(option, color_keys[n]);
- X***************
- X*** 87,99
- X }
- X }
- X }
- X! XtSetArg(args[0], XtNfont, &font);
- X! XtSetArg(args[1], XtNforeground, &fg);
- X! XtSetArg(args[2], XtNbackground, &bg);
- X! XtSetArg(args[3], XtNwidth, &W);
- X! XtSetArg(args[4], XtNheight,&H);
- X! XtGetValues(w_label, args, FIVE);
- X! vchar = (font->ascent + font->descent);
- X
- X /* add callbacks on input-from-gnuplot-on-stdin & window-resized */
- X XtAddInput(0, XtInputReadMask, gnuplot, NULL);
- X
- X--- 108,118 -----
- X }
- X }
- X }
- X! XtSetArg(args[0], XtNwidth, &W);
- X! XtSetArg(args[1], XtNheight,&H);
- X! XtGetValues(w_label, args, (Cardinal)2);
- X! XtGetApplicationResources(w_top, &rv, resources, XtNumber(resources),NULL,0);
- X! vchar = (rv.font->ascent + rv.font->descent);
- X
- X /* add callbacks on input-from-gnuplot-on-stdin & window-resized */
- X XtAddInput(0, XtInputReadMask, gnuplot, NULL);
- X***************
- X*** 113,121
- X /* set scaling factor between internal driver & window geometry */
- X xscale = (double)W / 4096.; yscale = (double)H / 4096.;
- X
- X- /* return old pixmap & GC, if any */
- X- if (gc) { XFreeGC(dpy, gc); XFreePixmap(dpy, pixmap); }
- X-
- X /* create new pixmap & GC */
- X pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy), W, H, D);
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X
- X--- 132,137 -----
- X /* set scaling factor between internal driver & window geometry */
- X xscale = (double)W / 4096.; yscale = (double)H / 4096.;
- X
- X /* create new pixmap & GC */
- X if (gc) { XFreeGC(dpy, gc); XFreePixmap(dpy, pixmap); }
- X pixmap = XCreatePixmap(dpy, RootWindow(dpy,DefaultScreen(dpy)), W, H, D);
- X***************
- X*** 117,123
- X if (gc) { XFreeGC(dpy, gc); XFreePixmap(dpy, pixmap); }
- X
- X /* create new pixmap & GC */
- X! pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy), W, H, D);
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X XSetFont(dpy, gc, font->fid);
- X
- X
- X--- 133,140 -----
- X xscale = (double)W / 4096.; yscale = (double)H / 4096.;
- X
- X /* create new pixmap & GC */
- X! if (gc) { XFreeGC(dpy, gc); XFreePixmap(dpy, pixmap); }
- X! pixmap = XCreatePixmap(dpy, RootWindow(dpy,DefaultScreen(dpy)), W, H, D);
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X XSetFont(dpy, gc, rv.font->fid);
- X
- X***************
- X*** 119,125
- X /* create new pixmap & GC */
- X pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy), W, H, D);
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X! XSetFont(dpy, gc, font->fid);
- X
- X /* connect new pixmap to label widget */
- X XtSetArg(args[0], XtNbitmap, pixmap);
- X
- X--- 136,142 -----
- X if (gc) { XFreeGC(dpy, gc); XFreePixmap(dpy, pixmap); }
- X pixmap = XCreatePixmap(dpy, RootWindow(dpy,DefaultScreen(dpy)), W, H, D);
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X! XSetFont(dpy, gc, rv.font->fid);
- X
- X /* erase pixmap */
- X #ifndef MOTIF
- X***************
- X*** 121,130
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X XSetFont(dpy, gc, font->fid);
- X
- X- /* connect new pixmap to label widget */
- X- XtSetArg(args[0], XtNbitmap, pixmap);
- X- XtSetValues(w_label, args, ONE);
- X-
- X /* erase pixmap */
- X if (Color) {
- X XSetForeground(dpy, gc, bg);
- X
- X--- 138,143 -----
- X gc = XCreateGC(dpy, pixmap, 0, NULL);
- X XSetFont(dpy, gc, rv.font->fid);
- X
- X /* erase pixmap */
- X #ifndef MOTIF
- X if (Color) { /* Athena needs different erase for color and mono */
- X***************
- X*** 126,133
- X XtSetValues(w_label, args, ONE);
- X
- X /* erase pixmap */
- X! if (Color) {
- X! XSetForeground(dpy, gc, bg);
- X XFillRectangle(dpy, pixmap, gc, 0, 0, W, H);
- X XSetForeground(dpy, gc, fg);
- X XSetBackground(dpy, gc, bg);
- X
- X--- 139,148 -----
- X XSetFont(dpy, gc, rv.font->fid);
- X
- X /* erase pixmap */
- X! #ifndef MOTIF
- X! if (Color) { /* Athena needs different erase for color and mono */
- X! #endif
- X! XSetForeground(dpy, gc, rv.bg);
- X XFillRectangle(dpy, pixmap, gc, 0, 0, W, H);
- X XSetForeground(dpy, gc, rv.fg);
- X XSetBackground(dpy, gc, rv.bg);
- X***************
- X*** 129,136
- X if (Color) {
- X XSetForeground(dpy, gc, bg);
- X XFillRectangle(dpy, pixmap, gc, 0, 0, W, H);
- X! XSetForeground(dpy, gc, fg);
- X! XSetBackground(dpy, gc, bg);
- X }
- X else {
- X XSetFunction(dpy, gc, GXxor);
- X
- X--- 144,152 -----
- X #endif
- X XSetForeground(dpy, gc, rv.bg);
- X XFillRectangle(dpy, pixmap, gc, 0, 0, W, H);
- X! XSetForeground(dpy, gc, rv.fg);
- X! XSetBackground(dpy, gc, rv.bg);
- X! #ifndef MOTIF
- X }
- X else {
- X XSetFunction(dpy, gc, GXxor);
- X***************
- X*** 132,138
- X XSetForeground(dpy, gc, fg);
- X XSetBackground(dpy, gc, bg);
- X }
- X! else {
- X XSetFunction(dpy, gc, GXxor);
- X XCopyArea(dpy, pixmap, pixmap, gc, 0, 0, W, H, 0, 0);
- X XSetFunction(dpy, gc, GXcopyInverted);
- X
- X--- 148,154 -----
- X XSetBackground(dpy, gc, rv.bg);
- X #ifndef MOTIF
- X }
- X! else {
- X XSetFunction(dpy, gc, GXxor);
- X XCopyArea(dpy, pixmap, pixmap, gc, 0, 0, W, H, 0, 0);
- X XSetFunction(dpy, gc, GXcopyInverted);
- X***************
- X*** 137,142
- X XCopyArea(dpy, pixmap, pixmap, gc, 0, 0, W, H, 0, 0);
- X XSetFunction(dpy, gc, GXcopyInverted);
- X }
- X
- X /* loop over accumulated commands from inboard driver */
- X for (n=0; n<nc; n++) {
- X
- X--- 153,159 -----
- X XCopyArea(dpy, pixmap, pixmap, gc, 0, 0, W, H, 0, 0);
- X XSetFunction(dpy, gc, GXcopyInverted);
- X }
- X+ #endif
- X
- X /* connect new pixmap to label widget */
- X XtSetArg(args[0], LabelBPM, pixmap);
- X***************
- X*** 138,143
- X XSetFunction(dpy, gc, GXcopyInverted);
- X }
- X
- X /* loop over accumulated commands from inboard driver */
- X for (n=0; n<nc; n++) {
- X buf = commands[n];
- X
- X--- 155,164 -----
- X }
- X #endif
- X
- X+ /* connect new pixmap to label widget */
- X+ XtSetArg(args[0], LabelBPM, pixmap);
- X+ XtSetValues(w_label, args, (Cardinal)1);
- X+
- X /* loop over accumulated commands from inboard driver */
- X for (n=0; n<nc; n++) {
- X buf = commands[n];
- X***************
- X*** 157,163
- X else if (*buf == 'T') {
- X sscanf(buf, "T%4d%4d", &x, &y);
- X str = buf + 9; sl = strlen(str) - 1;
- X! sw = XTextWidth(font, str, sl);
- X switch(jmode) {
- X case LEFT: sw = 0; break;
- X case CENTRE: sw = -sw/2; break;
- X
- X--- 178,184 -----
- X else if (*buf == 'T') {
- X sscanf(buf, "T%4d%4d", &x, &y);
- X str = buf + 9; sl = strlen(str) - 1;
- X! sw = XTextWidth(rv.font, str, sl);
- X switch(jmode) {
- X case LEFT: sw = 0; break;
- X case CENTRE: sw = -sw/2; break;
- X***************
- X*** 205,210
- X
- X /*-----------------------------------------------------------------------------
- X * gnuplot - Xt callback on input from gnuplot inboard X11 driver
- X *---------------------------------------------------------------------------*/
- X
- X static void
- X
- X--- 226,232 -----
- X
- X /*-----------------------------------------------------------------------------
- X * gnuplot - Xt callback on input from gnuplot inboard X11 driver
- X+ * resize - Xt callback when window resized
- X *---------------------------------------------------------------------------*/
- X
- X static void
- X***************
- X*** 213,220
- X while (fgets(buf, Nbuf, stdin)) {
- X if (*buf == 'G') { /* enter graphics mode */
- X if (commands) {
- X! int n;
- X! for (n=0; n<nc; n++) XtFree(commands[n]);
- X XtFree(commands);
- X }
- X commands = NULL; nc = 0;
- X
- X--- 235,241 -----
- X while (fgets(buf, Nbuf, stdin)) {
- X if (*buf == 'G') { /* enter graphics mode */
- X if (commands) {
- X! int n; for (n=0; n<nc; n++) XtFree(commands[n]);
- X XtFree(commands);
- X }
- X commands = NULL; nc = 0;
- X***************
- X*** 228,237
- X }
- X if (feof(stdin) || ferror(stdin)) exit(0);
- X }
- X-
- X- /*-----------------------------------------------------------------------------
- X- * resize - Xt callback when window resized
- X- *---------------------------------------------------------------------------*/
- X
- X static void
- X resize(w, cd, e) Widget w; char *cd; XConfigureEvent *e; {
- X
- X--- 249,254 -----
- X }
- X if (feof(stdin) || ferror(stdin)) exit(0);
- X }
- X
- X static void
- X resize(w, cd, e) Widget w; char *cd; XConfigureEvent *e; {
- END_OF_patch2a
- if test 50620 -ne `wc -c <patch2a`; then
- echo shar: \"patch2a\" unpacked with wrong size!
- fi
- # end of overwriting check
- fi
- echo shar: End of shell archive.
- exit 0
-
- exit 0 # Just in case...
- --
- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM
- Sterling Software, IMD UUCP: uunet!sparky!kent
- Phone: (402) 291-8300 FAX: (402) 291-4362
- Please send comp.sources.misc-related mail to kent@uunet.uu.net.
-